一、Mix 基本
二、語法
let mix = require('laravel-mix')
// 預處理 sass 檔案
// 將 app.scss 處理後匯出到 public/css 下
// 第一個參數為要處理的檔案, 第二個參數為要匯出的位置
mix.sass('resource/sass/app.scss', 'public/css')
// 預處理 js 檔案
mix.js('resource/js/app.js', 'public/js')
// 處理 vue
// mix 預設可以處理 vue, 只需要在使用 js() 方法後接 vue() 方法
mix.js('resource/js/app.js', 'public/js').vue()
// 處理 react
mix.react('resources/js/app.js', 'public/js')
// 結合 css 目錄下的所有檔案
mix.styles('resources/css', 'public/css/all.css')
// 結合 css 目錄下指定檔案
mix.styles([
'resources/css/normalize.css',
'resources/css/sidebar.css'
], 'public/css/custom.css')
// 結合 js 下的所有檔案
mix.scripts('resoucrce/js', 'public/js/all.js')
三、版本控管
- 在 mix() 後面添加 version() 方法
mix.sass('resources/sass/app.scss', 'public/css').version()
// 在 mix-manifest.json 裡面會記錄產生的結果與對應的連結
{
"/js/app.js": "/js/app.js?id=6c9398f84a8b8b004c2c3a3a106c5b9f",
"/css/app.css": "/css/app.css?id=b429dea1197d2eac455a45bf34f62d32"
}
<!-- 會比對 mix-manifest.json 檔案內容進行轉換 -->
<link rel="stylesheet" href="{{ mix("css/app.css") }}">
Hot Module Replacement
- Vue 或 React 在使用路由產生 SPA 服務時, 有時測試人員在經過幾個步驟後, 需要更新代碼, 此時可以利用 Hot Module Replacement ( HRM ), 在不動到頁面上的操作流程更新代碼
- HRM 熱模組替換、熱重載, 當其運作時要求 Browsersync 遇到重新編譯時, 只重載有更動的檔案, 不會影響操作頁面上已有的內容
- 使用時須下 cmd 指令 npm run hot, Mix 會在 localhost:8080 開啟小型 Node.js 伺服器
- 因為是在 port 8080 上啟動 HRM, 因此 <script> 網址需指向 8080 port, 此時可以利用 mix() 方法引入 js 檔案, 會自動添加 8080 port